
        <html>
			<head>
			     <title>“信任“之殇――安全软件的“白名单”将放大恶意威胁 - 火绒安全</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/15249">http://drops.wooyun.org/tips/15249</a></h1>
				
      <p>
        <h1>0x00 背景</h1>

<hr />

<p>“白名单“，即一系列被信任的对象的集合，与”黑名单“对应，通常被用来实现”排除“类的逻辑。在安全领域中，”白名单“通常被用来优化对信任对象的分析逻辑或解决查杀、拦截逻辑所产生的误报等。</p>

<p>然而，在国内的安全圈里有一种“非白即黑“的说法，即通过统计学算法等极为宽泛的启发逻辑对待检测样本进行”扫描“，并通过高覆盖率的”白名单“云（即通常所说的”白云“）来压制这类启发算法所带来的误报。这种逻辑并不难理解，因为”白文件“的数量远远多于”黑文件“，所以如果忽略误报的问题，“用白名单报毒“显然可以”有效“提高”检测率“。这就不难理解，为什么我们常常会在网络上看到某某安全软件的用户反映”为什么我自己刚刚编译的程序就被某某安全软件报毒？“这样的问题了。</p>

<!--more-->

<p>另外，一些安全软件还会利用“白名单“来”优化用户体验“，例如对”白名单”程序的行为不作分析、拦截等等。</p>

<p>然而，（对“白名单”的）“信任”往往伴随着漏洞，这些漏洞可能来自程序逻辑，甚至可能源于人性。由于“信任”机制所产生的漏洞，我们通常称其为“信任漏洞”。病毒作者通常会试图利用安全软件的“信任漏洞”，想方设法利用在安全软件”白名单“内的程序来实现恶意行为。我们称这类技术为”信任利用“（Trust-Exploitation）技术，也就是坊间常说的”白加黑“。前段时间新闻报道过的病毒作者通过贿赂某安全软件厂商人员，将自己的病毒程序加入的安全软件的”白名单“，正是出于这个目的。</p>

<p>最近火绒的”软件安装拦截“截获了一个名为”光速桌面搜索”的静默安装包（图1、图2），它就是试图通过“信任利用”技术来静默推广安装多款软件。</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210262456685150.jpg" alt="p1" /> 图1、"光速桌面搜索"静默安装包</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210263080254230.jpg" alt="p2" /> 图2、火绒“软件安装拦截“提示</p>

<h1>0x01 分析</h1>

<hr />

<p>这个”光速桌面搜索”的静默安装包（后文简称“光速桌面搜索”）运行后会释放一个名为qdw.exe的文件，通过查看文件信息，发现该文件有合法的金山数字签名。通过分析，不难发现这个qdw.exe其实是WPS的升级程序（图3、图4）。</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210263253270324.jpg" alt="p3" /> 图3、文件描述信息</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210263432056415.jpg" alt="p4" /> 图4、合法的文件签名</p>

<p>接下来，“光速桌面搜索”通过这个WPS升级程序支持的命令行参数，来实现后台推广软件下载和执行。如图5、图6所示：</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210263525482515.jpg" alt="p5" /> 图5、“光速桌面搜索”利用WPS升级程序进行流氓推广</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210263785108616.jpg" alt="p6" /> 图6、“光速桌面搜索”利用WPS升级程序进行流氓推广</p>

<p>由于这个”WPS升级程序“是通过命令行参数来获取下载链接的，使得别人可以轻易的修改下载地址，而且该程序对下载链接和下载后的的程序没有验证安全性，导致了可以下载运行任意程序。由于这个2011年签名的WPS升级程序早已被各家安全软件收入”白名单“，才被“光速桌面搜索”用来施展“信任利用“技术，堂而皇之地进行流氓推广。</p>

<h1>0x02 延伸</h1>

<hr />

<p>通过金山的数字签名，我们发现这个WPS升级程序产生于2011年。经过这几年的发展，还会不会有正规软件存在这样的漏洞呢？</p>

<p>通过火绒安全情报分析系统，我们发现存在此类漏洞的软件并不止金山一家，腾讯视频、QQ影音、PPLive等软件均存在此类程序设计漏洞，病毒作者可以通过上述软件的程序组件下载并执行任意程序。如图7、图8、图9所示：</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210263883528716.jpg" alt="p7" /> 图7、腾讯视频推广程序命令行</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210264056675814.jpg" alt="p8" /> 图8、QQ影音推广程序命令行</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210264142462912.jpg" alt="p9" /> 图9、PPLive推广程序命令行</p>

<p>腾讯视频在安装的时候会可选的推广一些第三方软件（图10），而出问题的就是下载安装包的程序<code>St******cs.exe</code>。该程序没有对参数的合法性进行验证，只要按照参数格式替换掉下载链接，该程序就会全自动地完成下载、执行（图11）。图12所示的网址是我搭建的一个测试服务器，我在这个服务器上传了一个微软的计算器程序，之后将<code>St******cs.exe</code>程序拷贝到C盘根目录，添加参数运行，计算器程序被成功下载并运行。</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102643412001011.jpg" alt="p10" /> 图10、腾讯视频推广第三方应用</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102650302731116.jpg" alt="p11" /> 图11、腾讯视频通过<code>St******cs.exe</code>程序下载并运行推广包</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102652884141213.jpg" alt="p12" /> 图12、腾讯<code>St******cs.exe</code>漏洞测试</p>

<p>通过分析<code>St******cs.exe</code>，我们发现该程序在获取到命令行参数后，会去查找”<code>-b***url</code>”参数，如果找到就会获取参数提供的下载链接，但并没有去校验下载链接的合法性，就将其交给下载函数。如图13所示：</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102653934391312.jpg" alt="p13" /> 图13、腾讯<code>St******cs.exe</code>获取下载链接</p>

<p>在下载函数中，我们可以看到，在下载函数中该程序也没有校验链接的合法性，就直接创建目录并联网进行下载了。（如图14）</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102655181031411.jpg" alt="p14" /> 图14、腾讯<code>St******cs.exe</code>下载并运行程序</p>

<p>PPTV在安装时会也静默推广第三方软件，PPTV会在安装时释放一个<code>L****r.exe</code>的程序来下载安装包，该程序带有合法的PPTV的数字签名（如图15所示）。通过测试该程序也没有校验下载链接和下载的程序的安全性，只要修改命令行参数，发现该程序也可以按照任意指定的下载链接下载程序并运行（如图16所示）。</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102656422331510.jpg" alt="p15" /> 图15、PPTV的下载程序</p>

<p><img src="http://static.wooyun.org//drops/20160422/2016042210265823490169.jpg" alt="p16" /> 图16、PPTV漏洞测试</p>

<p>经过简单分析，我们发现该程序和腾讯的下载程序一样，都只是简单的获取参数中的下载链接后，直接下载并执行的程序，并没有任何的安全性验证（如图17、18所示）。</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102659917401711.jpg" alt="p17" /> 图17、PPTV <code>L****r.exe</code>获取下载链接、拼接保存文件路径</p>

<p><img src="http://static.wooyun.org//drops/20160422/20160422102701915891810.jpg" alt="p18" /> 图18、PPTV <code>L****r.exe</code>下载并执行任意程序</p>

<h1>0x03 综述</h1>

<hr />

<p>根据火绒安全情报分析系统统计到的拦截数据，我们发现有很多软件均存在本文中提到的设计漏洞。有些程序甚至已经被病毒或流氓软件作者所利用，通过软件的设计漏洞，利用安全软件的“信任漏洞”来躲避安全软件的查杀和拦截，进而执行恶意或流氓行为。</p>

<p>在这里，火绒呼吁：</p>

<ol>
<li>安全软件厂商应从技术上提升对拦截和查杀的准确度，合理地利用“白名单”，从逻辑和机制上避免“信任漏洞”的产生；</li>
<li>软件厂商也应提高代码安全意识，对于程序获得的输入数据应进行有效的合法性判断，避免程序的功能逻辑被恶意利用成为犯罪者手中的“刀具”；</li>
</ol>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          